01
Meridian
2026
An identity for a cartography studio, built from one mark that survives being shrunk to nothing.
Independent since 2024, working with small teams who need one person holding design and code together. Eight projects below, newest first.
Taking project work from spring 2027.
Read the writingEight projects, newest first.
Full index
01
Meridian
2026
An identity for a cartography studio, built from one mark that survives being shrunk to nothing.
02
Tideline
2025
A studio site where the architecture is the interface and the interface stays out of the way.
03
Foundry
2025
A text face drawn for long reading, released after four years of being not quite finished.
04
Northwind
2024
Packaging that says almost nothing, for a company whose product does the talking.
05
Cadence
2024
A component library four teams actually adopted, because it shipped with its own reasons.
06
Halcyon
2023
Three years of festival posters built from one rule and no photographs.
07
Beacon
2023
A reading app designed around the moment you put the phone down.
08
Ledger
2022
Stationery for an accountancy practice that wanted to look like neither a bank nor a startup.
Notes on building the things above.
All essaysWhat a design system owes you
Two failed systems, one adopted one, and the difference that turned out to be documentation rather than code.
March 2026
Against the dashboard
Most dashboards are a way of avoiding the harder question of what the user actually came to find out.
November 2025
Reading the codebase first
The first week on a new project is worth more spent reading than shipping, and it almost never is.
June 2025
The interface that explains itself
If a screen needs a tooltip to be understood, the tooltip is a bug report you wrote yourself.
September 2024
Shipping on a slow week
Working alone means some weeks produce nothing, and the useful skill is telling the two kinds of nothing apart.
February 2024
I take on a handful of product and interface projects a year, mostly with small teams. Tell me what you are making and where it is stuck.